#ifndef STATIONARYSHADER_H_
#define STATIONARYSHADER_H_

#include "CgShaderInterface.h"

class StationaryShader : public CgShaderInterface
{
private:
	CGparameter cg_toolPosFrag, cg_toolDirection;
protected:
public:
	StationaryShader();

	bool CgShaderInit(HWND a_hWnd, CGcontext a_cg_context,
		CGprofile a_cg_vertProfile, CGprofile a_cg_fragProfile);
	inline void SetToolPos(const fmath::vector3& a_vec)
	{
		cgGLSetParameter4f(cg_toolPosFrag, 
			a_vec.x, a_vec.y, a_vec.z, 1.0);
	}
	inline void SetToolAxis(const fmath::vector3& a_vec)
	{
		cgGLSetParameter4f(cg_toolDirection,
			a_vec.x, a_vec.y, a_vec.z, 0.0);
	}
	
	virtual std::vector<boost::function<void(const fmath::vector3&)>> SignUpForVecInfo();
	virtual std::vector<boost::function<void(float)>> SignUpForFloatInfo();
};

#endif //STATIONARYSHADER_H_